5765. Канарейки

 

На днях в Московский зоопарк прибыли новые жильцы – целых n канареек. Пока бедные птенцы томятся в неудобных временных контейнерах, в зале заседаний зоопарка на Совете орнитологов решается их судьба. А именно, ученым предстоит решить, как лучше всего распределить n канареек по имеющимся в зоопарке k клеткам так, чтобы при этом ни одна клетка не пустовала. Поскольку главным критерием при размещении птиц является комфорт, орнитологов в первую очередь интересует, сколько канареек окажется в самой заполненной клетке (то есть в клетке с максимальным числом канареек).

Для начала, Вам, как главному (и, как это ни печально, единственному) программисту зоопарка, поручили оценить эту величину, то есть найти, какое минимально и максимально возможное количество птиц может оказаться в самой заполненной клетке при условии, что ни одна клетка не останется пустой.

 

Вход. Два натуральных числа: количество канареек n и количество клеток k (1kn109).

 

Выход. Выведите два натуральных числа: минимально и максимально возможное количество канареек в самой заполненной клетке.

 

Пример входа

Пример выхода

7 4

2 4

 

 

РЕШЕНИЕ

элементарная задача

 

Анализ алгоритма

Для того чтобы в самой заполненной клетке было наименьшее количество канареек, их следует стараться расселять поровну. То есть сначала в каждую клетку посадить по  канареек. А оставшиеся n* k канареек по одной подселить в n* k клеток. Тогда минимально возможное количество канареек в самой заполненной клетке составит  = .

Для того чтобы в самой заполненной клетке было наибольшее количество канареек, в каждую клетку кроме одной следует поселить одну канарейку. Остальные nk + 1 канареек следует поселить в оставшуюся клетку.

 

Пример

Рассмотрим первый тест, где n = 7, k = 4. Минимально возможное количество канареек в самой заполненной клетке равно  = 2. В трех клетках находится по 2 канарейки, в четвертой одна.

 

Максимально возможное количество канареек равно 7 – 4 + 1 = 4. В трех клетках находится по одной канарейке, в четвертой 4 (все остальные).

 

Реализация алгоритма

Читаем входные данные. Вычисляем искомые значения и выводим их.

 

scanf("%d %d",&n,&k);

min = (n + k - 1) / k;

max = n  - k + 1;

printf("%d %d\n",min,max);

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

    int k = con.nextInt();

    int min = (n + k - 1) / k;

    int max = n  - k + 1;

    System.out.println(min + " " + max);

  }

}

 

Python реализация

 

n, k = map(int,input().split())

min = (n + k - 1) // k

max = n  - k + 1

print(min,max);